package org.example.utils;

import org.example.iFunction.BranchHandle;
import org.example.iFunction.PresentOrElseHandler;
import org.example.iFunction.ReturnHandle;
import org.example.iFunction.ThrowExceptionFunction;

/**
 * @author : guorf
 * @version : v1.0
 * @description : TODO
 * @createTime : 2023/4/26 16:45
 */
public class VUtils {
    /**
     *  如果参数为true抛出异常
     *
     * @param b
     * @return com.example.demo.func.ThrowExceptionFunction
     **/
    public static ThrowExceptionFunction isTure(boolean b){

        return (errorMessage) -> {
            if (b){
                throw new RuntimeException(errorMessage);
            }
        };
    }

    /**
     * 参数为true或false时，分别进行不同的操作
     *
     * @param b
     * @return com.example.demo.func.BranchHandle
     **/
    public static BranchHandle isTureOrFalse(boolean b){

        return (trueHandle, falseHandle) -> {
            if (b){
                trueHandle.run();
            } else {
                falseHandle.run();
            }
        };
    }
    
    /**
     * @description TODO 进行不同的操作
     * @param b 参数
     * @return org.example.iFunction.ReturnHandle
     **/
    public static ReturnHandle isTureOrFalseToReturn(boolean b) {
        return (trueHandle, falseHandle) -> {
            if (b){
                return trueHandle.get();
            } else {
                return falseHandle.get();
            }
        };
    }

    /**
     * 参数为true或false时，分别进行不同的操作
     *
     * @param b 参数
     * @return com.example.demo.func.BranchHandle
     **/
    public static PresentOrElseHandler<?> isBlankOrNoBlank(String str){

        return (consumer, runnable) -> {
            if (str == null || str.length() == 0){
                runnable.run();
            } else {
                consumer.accept(str);
            }
        };
    }

}
